// 引入网络请求
import { getMultiDate,getGoodsData } from '../../server/home.js'
// pages/home/home.js
// 定义一个规定好的常量
const TOP_DISTANCE = 1000
Page({

  /**
   * 页面的初始数据
   */
  data: {
    banners:[],
    recommends:[],
    list:['流行','新款','精选'],
    goods:{
      pop:{'page':0,'list':[]},
      new:{'page':0,'list':[]},
      sell:{'page':0,'list':[]},
    },
    currentIndex:'pop',
    showBacktop:false,
    isTabfixed:false,
    tabScrollTop:0
  },

  
  onLoad: function (options) {
    // 1.发送网络请求
    // 请求轮播图以及推荐数据
    this._getMultiDate()
    // 2.获取商品列表数据 如何将请求过的数据缓存起来
    this._getGoodsData('pop')
    this._getGoodsData('new')
    this._getGoodsData('sell')
  },
  onShow(){
    
  },
  _getMultiDate(){
    getMultiDate().then(res=>{
      console.log(res)
      const banners = res.data.data.banner.list.map(item=>{
        return item.image
      });
      const recommends = res.data.data.recommend.list;
      // 将banners 和 recommends 放到data中
      this.setData({
        banners,
        recommends
      })
    })
  },
  _getGoodsData(type){
    // 获取页码
    const page = this.data.goods[type].page+1
    // 发送网络请求
    getGoodsData(type,page).then((res =>{
      const list = res.data.data.list
      console.log(list)
      const oldList = this.data.goods[type].list
      oldList.push(...list)

      const typeKey = `goods.${type}.list`
      const pageKey = `goods.${type}.page`
      this.setData({
        [typeKey]:oldList,
        [pageKey]:page
      })
    }))
  },
  handleTabclick(event){
    // 获取到tab栏返回的index
    const index = event.detail.index
    const type = index==0?'pop':index==1?'new':index==2?'sell':'pop'
    console.log(type)
    this.setData({
      currentIndex : type
    })
  },
  handleimageLoad(){
    // 此时获取的高度仍然是不准确的，因为组件中的图片都是异步加载的，所以获取的高度并不包含未加载完的图片高度
    wx.createSelectorQuery().select('#tab-control').boundingClientRect(rect =>{
      console.log(rect)
      this.data.tabScrollTop = rect.top
    }).exec()
  },
// 页面上拉加载更多
  onReachBottom(){
    this._getGoodsData(this.data.currentIndex)
  },
  //监听滚动的高度
  onPageScroll(options){
    const scrollTop = options.scrollTop
    // 修改showBacktop的属性
    // 不要在滚动的函数中频繁调用this.setData 非常消耗性能
    // 防抖
    const flag = scrollTop >= TOP_DISTANCE
    if(flag != this.data.showBacktop){
      this.setData({
        showBacktop:flag
      })
    }
     //修改isTabFixed属性
  const flag2 = scrollTop >= this.data.tabScrollTop
  if(flag2 != this.data.isTabfixed){
    this.setData({
      isTabfixed:flag2
    })
  }
  }
 
})